CVWO Riding on Rails 2021/2022 Mid-Winter Assignment Submission
By Lee Zong Xun
This submission details the user stories and use cases for the application, database implementation and plans for the upcoming month.
Github Submission Repo: Frontend Repo, Backend Repo
Overview
Groups and Steps 📝 is a web application built using Rails and React for CVWO 2021/2022 assignment. It allows you to manage your tasks into groups, and further break them down into steps.
Architecture
This application adopted the use of MVC architecture for the backend and Flux architecture for the frontend.
Database Choice and design
PostgreSQL
Implemented with Rails.
Schema
Modeling Relationship (One to Many)
User Story
Description
As an app user, I would like to use the application as a central knowledge and task management platform. So that i can plan my tasks effectively and efficiently.
Acceptance Criteria
Build a task management application to allow real-time tasks updates and management. Allow users to perform basic CRUDs functionalities, a tagging system to categorise tasks and a search functionality to navigate between groups.
caution
Notes CRUDS functionality is dependent on API availability & integration.
Use Cases
Create a group
- Positive Response
- Negative Response
Edit and Delete a group
- Positive Response
- Negative Response
Create a step
- Positive Response
- Negative Response
Editing and Deleting a step
- Positive Response
- Negative Response
Search for groups
- Positive Response
- Negative Response
Filter steps
- Positive Response
- Negative Response
Adding tags
- Positive Response
- Negative Response
Reflection
So far, the experience has been absolutely amazing. Despite the numerous ups and downs, debugging, and internal screaming, I am really satisfied with the outcome of my mid-submission. While I had previous web programming experience (through my club activities), I had never built a full-stack web application from scratch nor have I worked with Ruby on Rails. As a result, the majority of my time was spent learning Rails syntax, reading documentation, and constructing the backend. Setting up the Linux Environment was also difficult, and I had to use Stack Overflow to debug several of the difficulties. Adopting the MVC design for the backend and the Flux architecture for the frontend has opened up my eyes to the many software engineering paradigms, particularly the notion of state management. Using Redux has made it exceedingly simple to maintain track of app-wide state with a single source of truth. This mid-assignment has helped me to further hone my understanding of web programming, and I intend to further improve it with the following features in the coming month.
Intended improvements over the next month
Implement other ancillary enhancements (i.e markdown and code support)
Introduce testing
Refactor to Typescript